#include<stdio.h>
#include<iostream>
#include <string>
//#include<stdlib.h>

using namespace std;
typedef struct node{
    int data;
    struct node *lchild;
    struct node *rchild;
}BTNode;
BTNode *CreateBT2(int *post,int *in ,int n)
{
  int i;
  BTNode *b;
  int r,*p;
  int k;
  if(n<=0)
  return NULL;
  r=post[n-1];
 // b=(BTNode *)malloc(sizeof(BTNode));
  b=new BTNode;
  b->data=r;
  p=in;
  for(i=0;i<n;i++)
  {
    if(p[i]==r)
    break;
  }
  k=i;
  b->lchild=CreateBT2(post,in,k);
  b->rchild=CreateBT2(post+k,p+1,n-k-1);
  return b;
}
void PreOrder(BTNode *b)
{
  if(b!=NULL)
  {
    printf(" %d",b->data);
    PreOrder(b->lchild);
    PreOrder(b->rchild);
  }
}
int main()
{
  int n,i;
  int post[50],in[50];
  BTNode *b;
  scanf( "%d",&n);
  for(i=0;i<n;i++)
  {
    scanf("%d",&post[i]);
  }
  for(i=0;i<n;i++)
  {
    scanf("%d",&in[i]);
  }
  b=CreateBT2(post,in,n);
  printf("Preorder:");
  PreOrder(b);
}

